package mpo;

import java.util.List;
/*
Zestaw operacji jaki musi oferowac kazda klasa dostaraczajaca dane
*/
public interface Database {
    boolean isExistDBConfigure();
    boolean isConnected(boolean  talkative);
    void closeConDb();

    
    boolean isPeselFree(String pesel);
    boolean isLoginFree(String login);
    
    User getUser(String pesel);//tested
    User getUseridZlecenie(int idZlecenie);//tested
    List<String> getUsersPeselList();//tested
    List<User> getUserList(); //tested
    int setUser(User userToBase); //tested
    int updateUser(User userOnBase); //tested
    int deleteUser(String pesel); //tested
    String logUser(String login, String haslo); //tested 
    
    Pracownik getPracownik(String pesel); //tested
    List<String> getPracownikPeselList(); //tested
    List<Pracownik> getPracownikList(); //tested
    int setPracownik(Pracownik pracownikToBase); //tested
    int updatePracownik(Pracownik pracownikOnBase); //tested
    
    Ksiegowa getKsiegowa(String pesel); //tested
    List<String> getKsiegowaPeselList(); //tested
    List<Ksiegowa> getKsiegowaList(); //tested
    int setKsiegowa(Ksiegowa ksiegowaToBase); //tested
    int updateKsiegowa(Ksiegowa ksiegowaOnBase); //tested
    
    Dyrektor getDyrektor(String pesel); //tested
    List<Dyrektor> getDyrektorList(); //tested
    List<String> getDyrektorPeselList(); //tested
    int setDyrektor(Dyrektor dyrektorToBase); //tested
    int updateDyrektor(Dyrektor dyrektorOnBase); //tested
    
    Klient getKlient(int id); //tested
    List<Klient> getKlientList(); //tested
    List<Integer> getKlientIdList(); //tested
    int setKlient(Klient klientToBase);//tested
    int updateKlient(Klient klientOnBase); //tested
    
    Kategoria getKategoria(int id); //tested
    List<Kategoria> getKategoriaList();//tested
    List<Integer> getKategoriaIdList();//tested
    List<Kategoria> getKategoriaListViaPesel(String pesel); //tested
    int setKategoria(Kategoria kategoriaToBase); //tested
    
    
    int updatePremia_rozlicz(int id); //1->2    //tested
    int updatePremia_odrzuc(int id);  //0->-1   //tested
    int updatePremia_przyznaj(int id); //0->1   //tested
    int updatePremia_decyzjaDyrektora(int id, String decyzja); 
    
    int setZlecenie(Zlecenie zlecenieToBase); //tested
    Zlecenie getZlecenie(int id); //tested
    List<Zlecenie> getZlecenieList(); //tested
    List<Integer> getZlecenieIdList(); //tested
    List<Zlecenie> getZlecenieListViaKlient(); //tested
    List<User> getUserListViaZlecenie();    //tested
    
    List<StatusZlecenia> getStatusListViaZlecenie();  //tested
    StatusZlecenia getStatusZlecenia(int id); //tested
    int setStatusZlecenia(StatusZlecenia status); //tested  
    int updateZlecenie(Zlecenie zlecenieDoUpdatu); //tested
    int rozliczZlecenie(int idZlecenia); //tested
    
    int setSprzet(Sprzet sprzetToBase); //tested
    Sprzet getSprzet(int id); //tested
    List<Sprzet> getSprzetList(); //tested
    List<Integer> getSprzetIdList(); //tested
    
    int setPremia(Premia premiaToBase);
    Premia getPremia(int id); //tested
    List<Premia> getPremiaList(); //tested
    List<Integer> getPremiaIdList(); //tested
    List<Premia> getPremiaListViaRozpatrzenie(String rozpatrzenie); //tested
    
    List<Integer> getZespolIdList(); //tested
    Zespol getZespol(int id);//tested
     
    int updateSprzet_stanZgloszenia(int id); //tested
    
 
}
